import { autoUpdater } from 'electron-updater'
import { BrowserWindow, ipcMain } from 'electron'

let mainWindow: BrowserWindow
export function checkForUpdates(win: BrowserWindow) {
  mainWindow = win
  ipcMain.on('checkUpdate', async (_, updateUrl) => {
    if (process.platform === 'darwin') {
      autoUpdater.setFeedURL(`${updateUrl}/mac`) //设置更新包的地址
      // } else if (process.platform === 'win32') {
    } else {
      autoUpdater.setFeedURL(`${updateUrl}/win`) //设置更新包的地址
    }
    autoUpdater.checkForUpdates().then((res) => {
      sendUpdateMessage(res, 'downloadProgress')
    }) // 检查更新
  })
  ipcMain.on('checkDownloadUpdate', () => {
    sendUpdateMessage('立即下载')
    autoUpdater.downloadUpdate() // 更新提示 发现新版本，是否立即下载？ '立即下载'
  })
  ipcMain.on('checkQuitAndInstall', () => {
    sendUpdateMessage('立即安装新版本')
    autoUpdater.quitAndInstall() // 新版本已下载完成，是否立即安装? '立即安装
  })
  autoUpdater.on('update-available', () => {
    sendUpdateMessage('发现新版本，是否立即下载？')
  })
  autoUpdater.on('update-not-available', () => {
    sendUpdateMessage('当前已是最新版本')
  })
  autoUpdater.on('error', () => {
    sendUpdateMessage('检查更新出错')
  })
  autoUpdater.on('download-progress', (progressObj) => {
    sendUpdateMessage(progressObj, 'downloadProgress')
  })
  autoUpdater.on('update-downloaded', () => {
    sendUpdateMessage('新版本已下载完成，是否立即安装？')
  })
}
function sendUpdateMessage(text, sendKey = 'updateMessage') {
  mainWindow.webContents.send(sendKey, text)
}
